package com.example.supplychainbackend.tool;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class DateTimeUtils {
    // 默认格式器
    private static final DateTimeFormatter DEFAULT_FORMATTER =
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    private static final DateTimeFormatter[] DATE_FORMATTERS = {
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"),
            DateTimeFormatter.ofPattern("yyyy-MM-dd")
    };
    // 获取默认格式的当前时间
    public static String getCurrentDateTime() {
        return format(LocalDateTime.now());
    }

    public static LocalDate parseDate(String dateString) throws DateTimeParseException {
        // 尝试用第一种格式解析（带时间）
        try {
            LocalDateTime dateTime = LocalDateTime.parse(dateString, DATE_FORMATTERS[0]);
            return dateTime.toLocalDate();
        } catch (DateTimeParseException e) {
            // 如果第一种格式失败，尝试第二种格式（不带时间）
            return LocalDate.parse(dateString, DATE_FORMATTERS[1]);
        }
    }

    public static String getCurrentDateForID() {
        return format(LocalDateTime.now(),"yyyyMMdd");
    }

    // 获取指定时区的当前时间
    public static String getCurrentDateTime(String zoneId ) {
        return format(LocalDateTime.now(ZoneId.of(zoneId)));
    }

    // 使用默认格式器格式化
    public static String format(LocalDateTime dateTime) {
        return dateTime.format(DEFAULT_FORMATTER);
    }

    // 自定义格式格式化
    public static String format(LocalDateTime dateTime, String pattern) {
        return dateTime.format(DateTimeFormatter.ofPattern(pattern));
    }
}
